-
-
Notifications
You must be signed in to change notification settings - Fork 459
Support .coveragerc.toml for configuration
#1952
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Support .coveragerc.toml for configuration
#1952
Conversation
| (".coveragerc.toml", True, False), | ||
| ("setup.cfg", False, False), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the priority of the new config properly determined in the config_files_to_try function?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
tests/test_config.py
Outdated
| @pytest.mark.parametrize("filename", ["pyproject.toml", ".coveragerc.toml"]) | ||
| def test_toml_config_file(self, filename) -> None: | ||
| # A pyproject.toml and coveragerc.toml will be read into the configuration. | ||
| self.make_file(filename, """\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the parameterization implemented appropriately, similar to pyproject.toml?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes.
| def test_coveragerc_toml_priority(self) -> None: | ||
| """Test that .coveragerc.toml has priority over pyproject.toml.""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is testing priority only over pyproject.toml in the test_coveragerc_toml_priority test sufficient?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes.
|
@nedbat, |
.coveragerc.toml for configuration.coveragerc.toml for configuration
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One change needed.
| (".coveragerc.toml", True, False), | ||
| ("setup.cfg", False, False), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
tests/test_config.py
Outdated
| @pytest.mark.parametrize("filename", ["pyproject.toml", ".coveragerc.toml"]) | ||
| def test_toml_config_file(self, filename) -> None: | ||
| # A pyproject.toml and coveragerc.toml will be read into the configuration. | ||
| self.make_file(filename, """\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes.
| def test_coveragerc_toml_priority(self) -> None: | ||
| """Test that .coveragerc.toml has priority over pyproject.toml.""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes.
tests/test_config.py
Outdated
| """) | ||
| with mock.patch.object(coverage.tomlconfig, "has_tomllib", False): | ||
| msg = "Can't read 'pyproject.toml' without TOML support" | ||
| msg = "Can't read '{filename}' without TOML support" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like tests are failing because this needs to be an f-string.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you. I will fix this error in the next commits. I run tox with version 3.12 locally, and I didn't see this error.
|
Thanks for doing this. There are some other changes needed. Let me know which you want to do, and which I should do:
|
Yes, I will add the changes |
4018790 to
673b0c0
Compare
673b0c0 to
c584e0d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Plz revert all the formatting changes. I marked some, find the rest.
6bee75f to
7565729
Compare
7565729 to
2558209
Compare
CHANGES.rst
Outdated
| .. _pull 1952: https://github.com/nedbat/coveragepy/pull/1952 | ||
|
|
||
|
|
||
| .. start-releases |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Invalid conflict resolution?
doc/config.rst
Outdated
| [html] | ||
| directory = coverage_html_report | ||
| """, | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Stray edit?
tests/test_config.py
Outdated
| """\ | ||
| @pytest.mark.parametrize("filename", ["pyproject.toml", ".coveragerc.toml"]) | ||
| def test_toml_config_file(self, filename: str) -> None: | ||
| # A pyproject.toml and coveragerc.toml will be read into the configuration. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| # A pyproject.toml and coveragerc.toml will be read into the configuration. | |
| # A pyproject.toml and .coveragerc.toml will be read into the configuration. |
tests/test_config.py
Outdated
| def test_toml_parse_errors(self, bad_config: str, msg: str) -> None: | ||
| @pytest.mark.parametrize("filename", ["pyproject.toml", ".coveragerc.toml"]) | ||
| @pytest.mark.parametrize("bad_config, msg", [ | ||
| ("[tool.coverage.run]\ntimid = \"maybe?\"\n", r"maybe[?]"), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A lot of reformatting?
tests/test_config.py
Outdated
| assert cov.config.xml_output == "/Users/me/somewhere/xml.out" | ||
| assert cov.config.exclude_list == ["~/data.file", "~joe/html_dir"] | ||
| assert cov.config.paths == {"mapping": ["/Users/me/src", "/Users/joe/source"]} | ||
| assert cov.config.paths == {'mapping': ['/Users/me/src', '/Users/joe/source']} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
?
tests/test_config.py
Outdated
| self.make_file( | ||
| "pyproject.toml", | ||
| """\ | ||
| self.make_file("pyproject.toml", """\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
?
2558209 to
05be667
Compare
This adds .coveragerc.toml to the list of configuration files that coverage.py will automatically search for, with higher priority than pyproject.toml but lower than .coveragerc.
Converts existing pyproject.toml tests to be parametrized to also test .coveragerc.toml functionality, ensuring both TOML config formats work identically.
This test ensures that when both .coveragerc.toml and pyproject.toml are present, .coveragerc.toml takes precedence as intended.
…agerc.toml configuration file support
05be667 to
0a508bf
Compare
|
I'm in progress - some tests have failed, I'm going to fix them |
| # A pyproject.toml file will be read into the configuration. | ||
| @pytest.mark.parametrize("filename", ["pyproject.toml", ".coveragerc.toml"]) | ||
| def test_toml_config_file(self, filename) -> None: | ||
| # A pyproject.toml and .coveragerc.toml file will be read into the configuration. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, not both, just one of them, right?
Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>
Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>
Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>
This patch provides a new configuration —
.coveragerc.toml. Considering that many projects have switched to toml configurations, this change offers a more flexible approach to manage coverage settings.Resolves #1643